Fixed GtkCellRendererText invalid pointer access.
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Sat, 3 Apr 2010 23:48:14 +0000 (19:48 -0400)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Sun, 4 Apr 2010 00:59:27 +0000 (20:59 -0400)
Fixed get_desired_size() to not access parameters when NULL and
also not to access priv->object if it hasnt yet been assigned.

gtk/gtkcellrenderertext.c

index 8529c089cc6d063ba1052aa6448479b043f6d874..37c5eb765acbe0093d5c57867506d5e365c07e03 100644 (file)
@@ -1946,25 +1946,43 @@ gtk_cell_renderer_text_extended_layout_get_desired_size (GtkExtendedLayout *layo
 
   priv = GTK_CELL_RENDERER_TEXT_GET_PRIVATE (layout);
 
-  if (minimal_size)
+  if (priv->owner)
     {
-      get_size (GTK_CELL_RENDERER (layout),
-                priv->owner, NULL, NULL, NULL, NULL,
-                &minimal_size->width, &minimal_size->height);
-    }
 
-  if (desired_size)
+      if (minimal_size)
+       {
+         get_size (GTK_CELL_RENDERER (layout),
+                   priv->owner, NULL, NULL, NULL, NULL,
+                   &minimal_size->width, &minimal_size->height);
+       }
+      
+      if (desired_size)
+       {
+         PangoEllipsizeMode ellipsize;
+         
+         ellipsize = priv->ellipsize;
+         priv->ellipsize = PANGO_ELLIPSIZE_NONE;
+         
+         get_size (GTK_CELL_RENDERER (layout),
+                   priv->owner, NULL, NULL, NULL, NULL,
+                   &desired_size->width, &desired_size->height);
+         
+         priv->ellipsize = ellipsize;
+       }
+    }
+  else
     {
-      PangoEllipsizeMode ellipsize;
-
-      ellipsize = priv->ellipsize;
-      priv->ellipsize = PANGO_ELLIPSIZE_NONE;
-
-      get_size (GTK_CELL_RENDERER (layout),
-                priv->owner, NULL, NULL, NULL, NULL,
-                &desired_size->width, &desired_size->height);
-
-      priv->ellipsize = ellipsize;
+      if (minimal_size)
+       {
+         minimal_size->height = 0;
+         minimal_size->width = 0;
+       }
+      
+      if (desired_size)
+       {
+         desired_size->height = 0;
+         desired_size->width = 0;
+       }
     }
 }